namespace _1009
{
    public static class Demo
    {
        // 作业1：输出1000以内的水仙花数（for循环实现）
        public static void TestPrint1()
        {
            Console.WriteLine("===== 1009 作业1：1000以内的水仙花数 =====");
            Console.WriteLine("水仙花数是指一个3位数，其各位数字立方和等于该数本身（如153=1³+5³+3³）\n");

            // 1000以内的水仙花数都是3位数，循环范围100-999
            for (int num = 100; num < 1000; num++)
            {
                // 提取百位、十位、个位
                int hundreds = num / 100;          // 百位：除以100取整
                int tens = (num / 10) % 10;        // 十位：除以10取整后，对10取余
                int units = num % 10;              // 个位：对10取余

                // 判断是否为水仙花数（各位立方和等于本身）
                if (hundreds * hundreds * hundreds + tens * tens * tens + units * units * units == num)
                {
                    Console.Write(num + " ");
                }
            }
            Console.WriteLine("\n"); // 换行，优化显示
        }

        // 作业2：输出100以内所有的质数（for循环实现）
        public static void TestPrint2()
        {
            Console.WriteLine("===== 1009 作业2：100以内的所有质数 =====");
            Console.WriteLine("质数是指大于1的自然数，除了1和它本身外，不能被其他自然数整除\n");
            Console.Write("100以内的质数：");

            // 循环范围2-100（质数从2开始）
            for (int num = 2; num <= 100; num++)
            {
                bool isPrime = true; // 标记是否为质数，默认是

                // 判断num是否能被2到sqrt(num)之间的数整除（优化循环范围，减少计算）
                for (int i = 2; i * i <= num; i++)
                {
                    if (num % i == 0) // 能被整除，不是质数
                    {
                        isPrime = false;
                        break; // 跳出内层循环，无需继续判断
                    }
                }

                // 若是质数，输出
                if (isPrime)
                {
                    Console.Write(num + " ");
                }
            }
            Console.WriteLine("\n"); // 换行，优化显示
        }
    }
}